From 46828f8e0aa7b03497706d90f2aacc1a9423939e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Tue, 6 Mar 2018 17:44:33 +0100 Subject: [PATCH] expander: fix sizes in resize_toplevel We can't use gtk_widget_get_allocation for either non-anchored widgets (which happens with the child widget when the expander is unexpanded) nor toplevel windows since that will include the window decorations. Fixes #70 in gtk3 --- gtk/gtkexpander.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/gtk/gtkexpander.c b/gtk/gtkexpander.c index cd77178f01..b47f485934 100644 --- a/gtk/gtkexpander.c +++ b/gtk/gtkexpander.c @@ -1030,30 +1030,23 @@ gtk_expander_resize_toplevel (GtkExpander *expander) { GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (expander)); - if (toplevel && gtk_widget_get_realized (toplevel)) + if (toplevel && GTK_IS_WINDOW (toplevel) && + gtk_widget_get_realized (toplevel)) { - GtkAllocation toplevel_allocation; - GtkAllocation child_allocation; + int toplevel_width, toplevel_height; + int child_height; - gtk_widget_get_allocation (toplevel, &toplevel_allocation); - gtk_widget_get_allocation (child, &child_allocation); + gtk_widget_get_preferred_height (child, &child_height, NULL); + gtk_window_get_size (GTK_WINDOW (toplevel), &toplevel_width, &toplevel_height); if (priv->expanded) - { - GtkRequisition child_requisition; - - gtk_widget_get_preferred_height_for_width (child, child_allocation.width, &child_requisition.height, NULL); - - toplevel_allocation.height += child_requisition.height; - } + toplevel_height += child_height; else - { - toplevel_allocation.height -= child_allocation.height; - } + toplevel_height -= child_height; gtk_window_resize (GTK_WINDOW (toplevel), - toplevel_allocation.width, - toplevel_allocation.height); + toplevel_width, + toplevel_height); } } } -- 2.30.2